package api

type CreateCardReq struct {
	LocalCurrency   string `json:"local_currency"`
	AuthLimitAmount string `json:"auth_limit_amount"`
	CardUserId      string `json:"card_user_id"`
	Email           string `json:"email"`
	CardAlias       string `json:"card_alias"`
	CardHead        string `json:"card_head"`
	CardArea        string `json:"card_area"`
	BusinessScene   string `json:"business_scene"`
}

type CardListReq struct {
	CardNo    string `json:"card_no"`
	StartTime string `json:"start_time"`
	Name      string `json:"name"`
	EndTime   string `json:"end_time"`
	PageSize  uint64 `json:"page_size"`
	Page      uint64 `json:"page"`
}

type CardListRes struct {
	CardId         string `json:"card_id"`
	CardNo         string `json:"card_no"`
	Balance        string `json:"balance"`
	FirstName      string `json:"first_name"`
	LastName       string `json:"last_name"`
	Expiration     string `json:"expiration"`
	State          string `json:"state"`
	CreateCardTime string `json:"create_card_time"`
}

type GetCardDetailsRes struct {
	CardId        string           `json:"card_id"`
	LastFourNum   string           `json:"last_four_num"`
	State         string           `json:"state"`
	Balance       string           `json:"balance"`
	CardNo        string           `json:"card_no"`
	FirstName     string           `json:"first_name"`
	LastName      string           `json:"last_name"`
	BillAddress   string           `json:"bill_address"`
	Email         string           `json:"email"`
	CardAlias     string           `json:"card_alias"`
	Expiration    string           `json:"expiration"`
	CardVerifyNo  string           `json:"card_verify_no"`
	CardTradeList []*CardTradeList `json:"card_trade_list"`
}

type CardTradeList struct {
	TradeType    string `json:"trade_type"`  //交易类型
	Amount       string `json:"amount"`      //交易金额
	MerchantName string `json:"beneficiary"` //收款商户
	TradeTime    string `json:"trade_time"`  //交易时间
	State        string `json:"state"`       //交易状态
}

type CardTradeListReq struct {
	CardNo    string `json:"card_no"`
	TradeType string `json:"trade_type"`
	StartTime string `json:"start_time"`
	EndTime   string `json:"end_time"`
	TradeNo   string `json:"trade_no"`
	State     string `json:"state"`
	PageSize  uint64 `json:"page_size"`
	Page      uint64 `json:"page"`
}

type CardTradeListRes struct {
	TradeNo       string `json:"trade_no"`
	CardNo        string `json:"card_no"`
	CardId        string `json:"card_id"`
	CardAlias     string `json:"card_alias"`
	Amount        string `json:"amount"`
	Currency      string `json:"currency"`
	LocalCurrency string `json:"local_currency"`
	LocalAmount   string `json:"local_amount"`
	TradeType     string `json:"trade_type"`
	FirstName     string `json:"first_name"`
	LastName      string `json:"last_name"`
	TradeTime     string `json:"trade_time"` //交易时间
	State         string `json:"state"`
}

type GetCardHolderListReq struct {
	Name         string `json:"name"`
	Mobile       string `json:"mobile"`
	Email        string `json:"email"`
	HolderStatus string `json:"holder_status"`
	PageSize     uint64 `json:"page_size"`
	Page         uint64 `json:"page"`
}

type GetCardHolderListRes struct {
	CardUserId   string `json:"card_user_id"`
	FirstName    string `json:"first_name"`
	LastName     string `json:"last_name"`
	MobilePreFix string `json:"mobile_pre_fix"`
	Mobile       string `json:"mobile"`
	Email        string `json:"email"`
	HolderStatus string `json:"holder_status"`
	CountryCode  string `json:"country_code"`
	CreatedAt    string `json:"created_at"`
	UpdatedAt    string `json:"updated_at"`
}

type CardHolderReq struct {
	FirstName      string `json:"first_name"`
	MiddleName     string `json:"middle_name"`
	LastName       string `json:"last_name"`
	Email          string `json:"email"`
	MobilePrefix   string `json:"mobile_prefix"`
	Mobile         string `json:"mobile"`
	BirthDate      string `json:"birth_date"`
	CountryCode    string `json:"country_code"`
	BillingState   string `json:"billing_state"`
	BillingCity    string `json:"billing_city"`
	BillingAddress string `json:"billing_address"`
	BillingZipCode string `json:"billing_zip_code"`
	Remark         string `json:"remark"`
}

type CardHolderVo struct {
	FirstName      string `json:"firstName"`
	MiddleName     string `json:"middleName"`
	LastName       string `json:"lastName"`
	Email          string `json:"email"`
	MobilePrefix   string `json:"mobilePrefix"`
	Mobile         string `json:"mobile"`
	BirthDate      string `json:"birthDate"`
	CountryCode    string `json:"countryCode"`
	BillingState   string `json:"billingState"`
	BillingCity    string `json:"billingCity"`
	BillingAddress string `json:"billingAddress"`
	BillingZipCode string `json:"billingZipCode"`
	Remark         string `json:"remark"`
}

type CardHolderRes struct {
	CardUserId string `json:"cardUserId"`
}

type DeleteCardHolderRes struct {
	CardUserId string `json:"cardUserId"`
}

type DeleteCardHolderReq struct {
	CardUserId string `json:"cardUserId"`
}

type CardHolderDetailsRes struct {
	FirstName      string `json:"first_name"`
	MiddleName     string `json:"middle_name"`
	LastName       string `json:"last_name"`
	Email          string `json:"email"`
	MobilePreFix   string `json:"mobile_pre_fix"`
	Mobile         string `json:"mobile"`
	BirthDate      string `json:"birth_date"`
	Remark         string `json:"remark"`
	CountryCode    string `json:"country_code"`
	BillingState   string `json:"billing_state"`
	BillingCity    string `json:"billing_city"`
	BillingAddress string `json:"billing_address"`
	BillingZipCode string `json:"billing_zip_code"`
}

type CardRechargeReq struct {
	CardId          string `json:"card_id"`
	AuthLimitAmount string `json:"amount"`
}

type CardRechargeVo struct {
	CardId          string `json:"cardId"`
	UserReqNo       string `json:"userReqNo"`
	AuthLimitAmount string `json:"authLimitAmount"`
	ChannelType     string `json:"channelType"`
}

type CardRechargeRes struct {
	OrderId string `json:"orderId"`
}

type CardApplyVoRes struct {
	CardId         string `json:"cardId"`
	LocalCurrency  string `json:"localCurrency"`
	CardNo         string `json:"cardNo"`
	CardVerifyNo   string `json:"cardVerifyNo"`
	CardExpiryDate string `json:"cardExpiryDate"`
}

type CardApplyReq struct {
	UserReqNo           string `json:"userReqNo"`
	LocalCurrency       string `json:"localCurrency"`
	StartDate           string `json:"startDate"`
	EndDate             string `json:"endDate"`
	CardAlias           string `json:"card_alias"`
	AuthLimitAmount     string `json:"authLimitAmount"`
	EnableCurrencyCheck int    `json:"enableCurrencyCheck"` // 1开启校验 0 不校验。如果开启,交易币种需同开卡币种【channelType=1时必传】
	BinRangeId          string `json:"binRangeId"`          // 常规卡(默认)：222929
	EnableMultiUse      string `json:"enableMultiUse"`      // 1多次卡0单次卡
	ChannelType         string `json:"channelType"`
	CardUserId          string `json:"cardUserId"`
}

type CardInfoRes struct {
	UserNo              string          `json:"userNo"`
	CardNo              string          `json:"cardNo"`
	CardVerifyNo        string          `json:"cardVerifyNo"`
	CardAlias           string          `json:"cardAlias"`
	CardLabel           string          `json:"cardLabel"`
	CardExpiryDate      string          `json:"cardExpiryDate"`
	LocalCurrency       string          `json:"localCurrency"`
	StartActiveDate     string          `json:"startActiveDate"`
	EndCloseDate        string          `json:"endCloseDate"`
	CreditLimitAmt      string          `json:"creditLimitAmt"`
	MinAuthAmt          string          `json:"minAuthAmt"`
	MaxAuthAmt          string          `json:"maxAuthAmt"`
	BalanceAmt          string          `json:"balanceAmt"`
	UsedAuthAmt         string          `json:"usedAuthAmt"`
	EnableMultiUse      string          `json:"enableMultiUse"`
	EnableCurrencyCheck string          `json:"enableCurrencyCheck"`
	CardClosedAmt       string          `json:"cardClosedAmt"`
	CardStatus          string          `json:"cardStatus"`
	CardStatusDesc      string          `json:"cardStatusDesc"`
	CreateTime          string          `json:"createTime"`
	CardUserInfo        CardUserInfo    `json:"cardUserInfo"`
	BillAddressInfo     BillAddressInfo `json:"billAddressInfo"`
}

type CardUserInfo struct {
	FirstName string `json:"firstName"`
	LastName  string `json:"lastName"`
	Email     string `json:"email"`
	Mobile    string `json:"mobile"`
	BirthDate string `json:"birthDate"`
}

type BillAddressInfo struct {
	Country        string `json:"country"`
	CountryCode    string `json:"countryCode"`
	BillingState   string `json:"billingState"`
	BillingCity    string `json:"billingCity"`
	BillingAddress string `json:"billingAddress"`
	BillingZipCode string `json:"billingZipCode"`
}

type GetCardInfoReq struct {
	CardId string `json:"cardId"`
}
type EditCardStatusRes struct {
	CardId string `json:"cardId"`
}

type GetCardImageReq struct {
	CardId string `json:"card_id"`
}

type GetCardImageVo struct {
	CardImgFront string `json:"cardImgFront"`
	CardImgBack  string `json:"cardImgBack"`
}

type GetCardImageRes struct {
	CardImgFront string `json:"card_img_front"`
	CardImgBack  string `json:"card_img_back"`
}

type GetUSAStatInfoRes struct {
	StateCode string `json:"state_code"`
	StateName string `json:"state_name"`
}

type CardTradeRefundListReq struct {
	CardNo    string `json:"card_no"`
	RecordNo  string `json:"record_no"`
	StartTime string `json:"start_time"`
	EndTime   string `json:"end_time"`
	PageSize  uint64 `json:"page_size"`
	Page      uint64 `json:"page"`
}

type CardTradeRefundListRes struct {
	OriginRecordNo   string `json:"origin_record_no"`
	RecordNo         string `json:"record_no"`
	CardNo           string `json:"card_no"`
	FirstName        string `json:"first_name"`
	LastName         string `json:"last_name"`
	CardAlias        string `json:"card_alias"`
	TransCurrencyAmt string `json:"trans_currency_amt"`
	TransCurrency    string `json:"trans_currency"`
	BillCurrencyAmt  string `json:"bill_currency_amt"`
	BillCurrency     string `json:"bill_currency"`
	SettleDate       string `json:"settle_date"`
	MerchantName     string `json:"merchant_name"`
}

type CardRefundReq struct {
	CardId       string `json:"card_id"`
	RefundAmount string `json:"refund_amount"`
	FlagBool     bool   `json:"flag_bool"`
}

type CardRefundVo struct {
	CardId       string `json:"cardId"`
	UserReqNo    string `json:"userReqNo"`
	RefundAmount string `json:"refundAmount"`
	ChannelType  string `json:"channelType"`
}
type CardRefundRes struct {
	OrderId string `json:"orderId"`
}

type CloseCardReq struct {
	CardId string `json:"card_id"`
}

type CloseCardVo struct {
	CardId    string `json:"cardId"`
	UserReqNo string `json:"userReqNo"`
}

type CloseCardRes struct {
	OrderId string `json:"orderId"`
}

type GetCardHeadToInfoRes struct {
	CardUserId  string `json:"card_user_id"`
	FirstName   string `json:"first_name"`
	LastName    string `json:"last_name"`
	CountryCode string `json:"country_code"`
}

type ManualCardRechargeRecordReq struct {
	Account        string  `json:"account"`
	FeeAmount      float64 `json:"fee_amount"`
	TransferAmount float64 `json:"transfer_amount"`
	RecordDesc     string  `json:"record_desc"`
}

type ManualDeductionAgentBalanceReq struct {
	Account    string  `json:"account"`
	Amount     float64 `json:"amount"`
	RecordType string  `json:"record_type"`
	RecordDesc string  `json:"record_desc"`
}
